package com.teach.demo04;

import java.util.List;

import com.teach.exception.NotSufficientFundsException;
import com.teach.exception.ParamLtZeroException;
import com.teach.exception.ProductNotExistsException;

public interface Machine {
	/**
	 * 添加一个商品
	 * 需要设置商品的编号
	 * @param product
	 */
	void add(Product product);
	
	/**
	 * 获取商品统计信息
	 * @return
	 */
	List<CountResult> list();
	
	/**
	 * 获取某个类别下的品牌
	 * @param name
	 * @return
	 */
	List<String> listBrand(String name);
	
	/**
	 * 修改商品价格
	 * @param name
	 * @param brand
	 * @param price
	 * @throws ParamLtZeroException
	 */
	void setPrice(String name,String brand,double price)throws ParamLtZeroException;
	
	/**
	 * 投币
	 * @param money
	 * @throws ParamLtZeroException
	 */
	void addMoney(double money)throws ParamLtZeroException;
	
	/**
	 * 获取余额
	 * @return
	 */
	double getMoney();
	
	/**
	 * 找零
	 * @return
	 */
	double give();
	
	/**
	 * 购买商品
	 * @param name
	 * @param brand
	 * @return 具体购买的商品对象
	 * @throws NotSufficientFundsException
	 * @throws ProductNotExistsException
	 */
	Product buy(String name,String brand)throws NotSufficientFundsException,ProductNotExistsException;
}
